package cn.tedu.spring.life;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * Bean对象生命周期(至初始化阶段)类
 */
@Component
public class Life {
    private String meaning;

    // 1.实例化-通过构造方法
    public Life() {
        System.out.println("1.通过无参构造实例化");
    }

    // 2.属性赋值[依赖注入]-通过set方法
    @Value("世界那么大,我想睡觉")
    public void setMeaning(String meaning) {
        this.meaning = meaning;
        System.out.println("2.通过set()方法进行属性赋值");
    }

    // 3.初始化-被指定标签拦截 执行前置性逻辑
    @PostConstruct
    public void init () {
        System.out.println("3.生命周期初始化方法开始执行");
    }

    // 5.销毁之前
    @PreDestroy
    public void destroy () {
        System.out.println("5.生命周期销毁之前需执行的逻辑");
    }
}
